Skip to content

Commit b5ab10e

Browse files
authored
fix: error with code generation when file has unnamed extension (#1020)
* fix: error with code generation when file has unnamed extension * fix: error with code generation when file has unnamed extension
1 parent 7a7a49c commit b5ab10e

8 files changed

+68
-8
lines changed

mobx_codegen/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.6.2
2+
3+
- Fixes [error with code generation when file has unnamed extension](https://github.com/mobxjs/mobx.dart/issues/1010) by [@amondnet](https://github.com/amondnet) in [#1020](https://github.com/mobxjs/mobx.dart/pull/1020)
4+
15
## 2.6.1+1
26

37
- Fixing some analyzer errors related to deprecated types.

mobx_codegen/lib/src/template/method_override.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class MethodOverrideTemplate {
4343

4444
late String name;
4545
late String returnType;
46-
late SurroundedCommaList<String> returnTypeArgs;
46+
late SurroundedCommaList<String?> returnTypeArgs;
4747

4848
late SurroundedCommaList<TypeParamTemplate> _typeParams;
4949
late SurroundedCommaList<String> _typeArgs;

mobx_codegen/lib/src/type_names.dart

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ class LibraryScopedNameFinder {
2222

2323
final LibraryElement library;
2424

25-
final Map<Element, String> _namesByElement = {};
25+
final Map<Element, String?> _namesByElement = {};
2626

27-
Map<Element, String> get namesByElement {
27+
Map<Element, String?> get namesByElement {
2828
// Add all of this library's type-defining elements to the name map
2929
final libraryElements =
3030
library.topLevelElements.whereType<TypeDefiningElement>();
3131
for (final element in libraryElements) {
32-
_namesByElement[element] = element.name!;
32+
_namesByElement[element] = element.name;
3333
}
3434

3535
// Reverse each import's export namespace so we can map elements to their
@@ -59,14 +59,14 @@ class LibraryScopedNameFinder {
5959
String findReturnTypeName(FunctionTypedElement executable) =>
6060
_getDartTypeName(executable.returnType);
6161

62-
List<String> findReturnTypeArgumentTypeNames(ExecutableElement executable) {
62+
List<String?> findReturnTypeArgumentTypeNames(ExecutableElement executable) {
6363
final returnType = executable.returnType;
6464
return returnType is ParameterizedType
6565
? returnType.typeArguments.map(_getDartTypeName).toList()
6666
: [];
6767
}
6868

69-
String findTypeParameterBoundsTypeName(TypeParameterElement typeParameter) {
69+
String? findTypeParameterBoundsTypeName(TypeParameterElement typeParameter) {
7070
assert(typeParameter.bound != null);
7171
return _getDartTypeName(typeParameter.bound!);
7272
}

mobx_codegen/lib/version.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
// Generated via set_version.dart. !!!DO NOT MODIFY BY HAND!!!
22

33
/// The current version as per `pubspec.yaml`.
4-
const version = '2.6.1+1';
4+
const version = '2.6.2';

mobx_codegen/pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: mobx_codegen
22
description: Code generator for MobX that adds support for annotating your code with @observable, @computed, @action and also creating Store classes.
3-
version: 2.6.1+1
3+
version: 2.6.2
44

55
repository: https://github.com/mobxjs/mobx.dart
66
issue_tracker: https://github.com/mobxjs/mobx.dart/issues
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
library generator_sample;
2+
3+
import 'package:mobx/mobx.dart';
4+
5+
part 'generator_sample.g.dart';
6+
7+
// ignore: library_private_types_in_public_api
8+
class Foo = _Foo with _$Foo;
9+
10+
abstract class _Foo with Store {
11+
@observable
12+
late String name;
13+
}
14+
15+
extension on int {}

mobx_codegen/test/data/with_extension_output.dart

+36
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mobx_codegen/test/mobx_codegen_test.dart

+5
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ void main() {
5959
'./data/valid_keep_alive_computed_output.dart');
6060
});
6161

62+
test('generates for a class with extension', () async {
63+
await compareFiles('./data/with_extension_input.dart',
64+
'./data/with_extension_output.dart');
65+
});
66+
6267
createTests([
6368
const TestInfo(
6469
description: 'invalid output is handled',

0 commit comments

Comments
 (0)