From 5af6e2ad4f3e720bdaa45dc42ed5d8da25e7c495 Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Mon, 15 Jun 2026 16:45:17 +0300 Subject: [PATCH 1/3] fix: support await expressions in proper_super_calls (235) --- .../proper_super_calls_rule.dart | 10 +++++-- lint_test/proper_super_calls_test.dart | 28 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) 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..f857b777 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; + if (expression is AwaitExpression) { + expression = expression.expression; + } 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; + if (expression is AwaitExpression) { + expression = expression.expression; + } 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..c9c367ec 100644 --- a/lint_test/proper_super_calls_test.dart +++ b/lint_test/proper_super_calls_test.dart @@ -80,3 +80,31 @@ 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(); + } +} + + From cb3cf5cbb9165fcff4a6a2d3353012d0db8926d5 Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Mon, 15 Jun 2026 16:57:57 +0300 Subject: [PATCH 2/3] fix: handle parenthesized expressions in proper_super_calls (#235) --- .../proper_super_calls_rule.dart | 8 +++--- lint_test/proper_super_calls_test.dart | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) 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 f857b777..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,9 +139,9 @@ class ProperSuperCallsRule extends SolidLintRule { final firstStatement = statements.first; if (firstStatement is ExpressionStatement) { - var expression = firstStatement.expression; + var expression = firstStatement.expression.unParenthesized; if (expression is AwaitExpression) { - expression = expression.expression; + expression = expression.expression.unParenthesized; } final isSuperInitStateCalledFirst = expression is MethodInvocation && @@ -161,9 +161,9 @@ class ProperSuperCallsRule extends SolidLintRule { final lastStatement = statements.last; if (lastStatement is ExpressionStatement) { - var expression = lastStatement.expression; + var expression = lastStatement.expression.unParenthesized; if (expression is AwaitExpression) { - expression = expression.expression; + expression = expression.expression.unParenthesized; } final lastStatementIsSuperDispose = expression is MethodInvocation && diff --git a/lint_test/proper_super_calls_test.dart b/lint_test/proper_super_calls_test.dart index c9c367ec..17fa1dc1 100644 --- a/lint_test/proper_super_calls_test.dart +++ b/lint_test/proper_super_calls_test.dart @@ -107,4 +107,30 @@ class _ProperSuperCallsTest3State extends State { } } +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()); + } +} + From 0d0454ca586b2b41f37327c8a7c698a9c3365496 Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Mon, 15 Jun 2026 17:07:36 +0300 Subject: [PATCH 3/3] refactor: remove redundant blank lines from proper_super_calls test --- lint_test/proper_super_calls_test.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lint_test/proper_super_calls_test.dart b/lint_test/proper_super_calls_test.dart index 17fa1dc1..4038495c 100644 --- a/lint_test/proper_super_calls_test.dart +++ b/lint_test/proper_super_calls_test.dart @@ -132,5 +132,3 @@ class _ProperSuperCallsTest4State extends State { (await super.dispose()); } } - -