Skip to content
This repository was archived by the owner on May 25, 2022. It is now read-only.

Commit 1a3c7ea

Browse files
committed
Merge pull request #12 from davidmorgan/master
Check for missing import statement. Fix constraints for source_gen.
2 parents cfd5597 + a889a14 commit 1a3c7ea

File tree

6 files changed

+37
-13
lines changed

6 files changed

+37
-13
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 0.0.6
4+
5+
- Check for missing import statement.
6+
- Fix constraints for source_gen.
7+
38
## 0.0.5
49

510
- Fix generation across multiple files, allow reuse of generated identifiers.

enum_class/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: enum_class
2-
version: 0.0.5
2+
version: 0.0.6
33
description: >
44
Dart classes as enums. This library is the runtime dependency.
55
authors:

enum_class_generator/lib/enum_class_generator.dart

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,20 @@ class EnumClassGenerator extends Generator {
2929
final classElement = element as ClassElement;
3030
final enumName = classElement.displayName;
3131

32-
// TODO(davidmorgan): do this in a way that works if the import is missing.
33-
if (classElement.allSupertypes
34-
.where((i) => i.displayName == 'EnumClass')
35-
.isEmpty) return null;
32+
if (classElement.supertype.displayName != 'EnumClass') {
33+
// Maybe they're trying to use EnumClass but forgot to import the library.
34+
if (classElement
35+
.computeNode()
36+
.toSource()
37+
.contains('class ${classElement.displayName} extends EnumClass')) {
38+
throw new InvalidGenerationSourceError(
39+
'Please make changes to use EnumClass.',
40+
todo:
41+
"Import EnumClass: import 'package:enum_class/enum_class.dart';");
42+
} else {
43+
return null;
44+
}
45+
}
3646

3747
final fields = _getApplicableFields(classElement);
3848
final errors = concat([

enum_class_generator/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: enum_class_generator
2-
version: 0.0.5
2+
version: 0.0.6
33
description: >
44
Dart classes as enums. This library is the dev dependency.
55
authors:
@@ -12,8 +12,8 @@ environment:
1212
dependencies:
1313
analyzer: '>=0.26.1 <1.0.0'
1414
built_collection: '^1.0.0'
15-
enum_class: '^0.0.5'
16-
source_gen: '>=0.4.3 <1.0.0'
15+
enum_class: '^0.0.6'
16+
source_gen: '>=0.4.3 <0.5.0'
1717
quiver: '>=0.21.0 <0.22.0'
1818

1919
dev_dependencies:

enum_class_generator/test/enum_class_generator_test.dart

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ part of test_enum;
105105
'''));
106106
});
107107

108-
// TODO(davidmorgan): it would be better to fail with an error message.
109-
test('fails silently on missing enum_class import', () async {
108+
test('fails with error on missing enum_class import', () async {
110109
expect(await generate(r'''
111110
library test_enum;
112111
@@ -122,7 +121,17 @@ class TestEnum extends EnumClass {
122121
static BuiltSet<TestEnum> get values => _$values;
123122
static TestEnum valueOf(String name) => _$valueOf(name);
124123
}
125-
'''), isEmpty);
124+
'''), endsWith(r'''
125+
part of test_enum;
126+
127+
// **************************************************************************
128+
// Generator: EnumClassGenerator
129+
// Target: class TestEnum
130+
// **************************************************************************
131+
132+
// Error: Please make changes to use EnumClass.
133+
// TODO: Import EnumClass: import 'package:enum_class/enum_class.dart';
134+
'''));
126135
});
127136

128137
test('fails with error on missing part statement', () async {

example/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ environment:
1010
sdk: '>=1.8.0 <2.0.0'
1111

1212
dependencies:
13-
enum_class: '^0.0.4'
13+
enum_class: '^0.0.6'
1414

1515
dev_dependencies:
16-
enum_class_generator: '^0.0.4'
16+
enum_class_generator: '^0.0.6'

0 commit comments

Comments
 (0)