diff --git a/lib/src/lints/proper_super_calls/proper_super_calls_rule.dart b/lib/src/lints/proper_super_calls/proper_super_calls_rule.dart index 34df0dbc..efa267c1 100644 --- a/lib/src/lints/proper_super_calls/proper_super_calls_rule.dart +++ b/lib/src/lints/proper_super_calls/proper_super_calls_rule.dart @@ -139,7 +139,10 @@ class ProperSuperCallsRule extends SolidLintRule { final firstStatement = statements.first; if (firstStatement is ExpressionStatement) { - final expression = firstStatement.expression; + var expression = firstStatement.expression.unParenthesized; + if (expression is AwaitExpression) { + expression = expression.expression.unParenthesized; + } final isSuperInitStateCalledFirst = expression is MethodInvocation && expression.target is SuperExpression && @@ -158,7 +161,10 @@ class ProperSuperCallsRule extends SolidLintRule { final lastStatement = statements.last; if (lastStatement is ExpressionStatement) { - final expression = lastStatement.expression; + var expression = lastStatement.expression.unParenthesized; + if (expression is AwaitExpression) { + expression = expression.expression.unParenthesized; + } final lastStatementIsSuperDispose = expression is MethodInvocation && expression.target is SuperExpression && diff --git a/lint_test/proper_super_calls_test.dart b/lint_test/proper_super_calls_test.dart index fc6e4773..4038495c 100644 --- a/lint_test/proper_super_calls_test.dart +++ b/lint_test/proper_super_calls_test.dart @@ -80,3 +80,55 @@ abstract interface class Disposable { /// Abstract methods should be omitted by `proper_super_calls` void dispose(); } + +class ProperSuperCallsTest3 extends StatefulWidget { + @override + State createState() => _ProperSuperCallsTest3State(); + + ProperSuperCallsTest3(); +} + +class _ProperSuperCallsTest3State extends State { + @override + Widget build() { + return Widget(); + } + + @override + Future initState() async { + await super.initState(); + print(''); + } + + @override + Future dispose() async { + print(''); + await super.dispose(); + } +} + +class ProperSuperCallsTest4 extends StatefulWidget { + @override + State createState() => _ProperSuperCallsTest4State(); + + ProperSuperCallsTest4(); +} + +class _ProperSuperCallsTest4State extends State { + @override + Widget build() { + return Widget(); + } + + @override + Future initState() async { + await (super.initState()); + print(''); + } + + @override + Future dispose() async { + print(''); + (await super.dispose()); + } +}