diff --git a/lib/src/transformer/impl_generation.dart b/lib/src/transformer/impl_generation.dart index 6b4824a9f..7c0fa81ec 100644 --- a/lib/src/transformer/impl_generation.dart +++ b/lib/src/transformer/impl_generation.dart @@ -278,7 +278,13 @@ class ImplGenerator { ); } - if (new RegExp(r'typed(Props|State)Factory\(.+\)(\s+)?({|=>)').hasMatch(sourceFile.getText(0))) { + var implementsTypedPropsStateFactory = declarations.component.node.members.any((member) => + member is MethodDeclaration && + !member.isStatic && + (member.name.name == 'typedPropsFactory' || member.name.name == 'typedStateFactory') + ); + + if (implementsTypedPropsStateFactory) { // Can't be an error, because consumers may be implementing typedPropsFactory or typedStateFactory in their components. logger.warning( 'Components should not add their own implementions of typedPropsFactory or typedStateFactory.', diff --git a/test/integration/strong_mode_test.dart b/test/integration/strong_mode_test.dart index bedab9914..2c2b51e0b 100644 --- a/test/integration/strong_mode_test.dart +++ b/test/integration/strong_mode_test.dart @@ -56,7 +56,6 @@ main() { test('generates strong mode compliant code', () async { var testProject = copyProject(strongModeProject); - // Run `pub get` and the bootstrap up-front so that back-to-back runs on the same directory complete faster. new File('$testProject/pubspec.yaml').writeAsStringSync(getPubspec()); expect(await Process.run('pub', ['get'], workingDirectory: testProject), succeeded); diff --git a/test_fixtures/strong_mode/web/generic_component.dart b/test_fixtures/strong_mode/web/generic_component.dart index 019d52f2f..0a726351f 100644 --- a/test_fixtures/strong_mode/web/generic_component.dart +++ b/test_fixtures/strong_mode/web/generic_component.dart @@ -1,13 +1,16 @@ import 'package:over_react/over_react.dart'; @Factory() -UiFactory GenericStateless; +UiFactory GenericStateful; @Props() -class GenericStatelessProps extends UiProps {} +class GenericStatefulProps extends UiProps {} + +@State() +class GenericStatefulState extends UiState {} @Component() -class GenericStatelessComponent extends UiComponent { +class GenericStatefulComponent extends UiStatefulComponent { @override render() { } }