From e8bd0491fd38a2b00298aea4f4c1e99e2b2166db Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Thu, 2 Jul 2026 14:47:38 +0300 Subject: [PATCH 1/4] test: add test for type promotion in avoid_unnecessary_return_variable --- ...unnecessary_return_variable_rule_test.dart | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart index 704cc16d..0eff3a91 100644 --- a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart +++ b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart @@ -213,7 +213,8 @@ int test() { ); } - void test_does_not_report_if_return_is_cached_and_used_after_return_nested_block() async { + void + test_does_not_report_if_return_is_cached_and_used_after_return_nested_block() async { await assertNoDiagnostics(r''' int test(bool b) { final a = 3; @@ -224,5 +225,23 @@ int test(bool b) { } '''); } -} + void test_does_not_report_if_type_promoted() async { + await assertNoDiagnostics(r''' +class Test { + final Map _map = {}; + + T get(String key) { + final value = _map[key]; + + if (value is T) { + // local variable is promoted to T + return value; + } + + throw Exception('value is not of type $T'); + } +} +'''); + } +} From d57c64d7d3780b1a97fbd8853b5191dfdc55b4cf Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Thu, 2 Jul 2026 15:00:07 +0300 Subject: [PATCH 2/4] test: refactor test name and remove whitespace in avoid_unnecessary_return_variable rule test --- .../avoid_unnecessary_return_variable_rule_test.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart index 0eff3a91..2dac7269 100644 --- a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart +++ b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart @@ -213,8 +213,7 @@ int test() { ); } - void - test_does_not_report_if_return_is_cached_and_used_after_return_nested_block() async { + void test_does_not_report_if_cached_and_used_after_nested_block() async { await assertNoDiagnostics(r''' int test(bool b) { final a = 3; @@ -233,7 +232,6 @@ class Test { T get(String key) { final value = _map[key]; - if (value is T) { // local variable is promoted to T return value; From 75b72767b5550e15e6b377fc0044f49287947092 Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Thu, 2 Jul 2026 15:12:59 +0300 Subject: [PATCH 3/4] test: add test for avoid_unnecessary_return_variable rule when variable is used in string interpolation --- .../avoid_unnecessary_return_variable_rule_test.dart | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart index 2dac7269..a5a5a9cb 100644 --- a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart +++ b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart @@ -240,6 +240,18 @@ class Test { throw Exception('value is not of type $T'); } } +'''); + } + + void test_does_not_report_if_used_in_other_return_statement() async { + await assertNoDiagnostics(r''' +String test() { + final someCondition = 1 == 1; + final a = 'test'; + if (someCondition) return a; + + return 'something $a'; +} '''); } } From 85b852441be2afab81c8b0ca0c3514e1dc989edf Mon Sep 17 00:00:00 2001 From: Illia Aihistov Date: Thu, 2 Jul 2026 15:21:50 +0300 Subject: [PATCH 4/4] test: update test cases for avoid_unnecessary_return_variable lint to improve type safety and parameter usage --- .../avoid_unnecessary_return_variable_rule_test.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart index a5a5a9cb..c112a617 100644 --- a/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart +++ b/test/lints/avoid_unnecessary_return_variable/avoid_unnecessary_return_variable_rule_test.dart @@ -228,7 +228,7 @@ int test(bool b) { void test_does_not_report_if_type_promoted() async { await assertNoDiagnostics(r''' class Test { - final Map _map = {}; + final Map _map = {}; T get(String key) { final value = _map[key]; @@ -245,8 +245,7 @@ class Test { void test_does_not_report_if_used_in_other_return_statement() async { await assertNoDiagnostics(r''' -String test() { - final someCondition = 1 == 1; +String test(bool someCondition) { final a = 'test'; if (someCondition) return a;