diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart index 04348e0b3b1..73fa689afd3 100644 --- a/pkg/analyzer/lib/src/generated/error_verifier.dart +++ b/pkg/analyzer/lib/src/generated/error_verifier.dart @@ -1252,6 +1252,18 @@ class ErrorVerifier extends RecursiveAstVisitor }); } + @override + void visitSwitchExpression(SwitchExpression node) { + checkForUseOfVoidResult(node.expression); + super.visitSwitchExpression(node); + } + + @override + void visitSwitchExpressionCase(SwitchExpressionCase node) { + checkForUseOfVoidResult(node.expression); + super.visitSwitchExpressionCase(node); + } + @override void visitSwitchPatternCase(SwitchPatternCase node) { _withHiddenElements(node.statements, () { diff --git a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart index 55ecebe1d72..dc5c2a06517 100644 --- a/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart +++ b/pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart @@ -213,6 +213,40 @@ void main() { ]); } + test_switchExpression_expression() async { + await assertErrorsInCode(''' +void f(void x) { + (switch(x) { + _ => 0, + }); +} +''', [ + error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 27, 1), + ]); + } + + test_switchExpressionCase_expression() async { + await assertErrorsInCode(''' +void f(Object? x) { + (switch(x) { + _ => print(x), + }); +} +''', [ + error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 44, 5), + ]); + } + + test_switchStatement_expression() async { + await assertErrorsInCode(''' +void f(void x) { + switch(x) {} +} +''', [ + error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1), + ]); + } + test_throwVoidValueError() async { await assertErrorsInCode(''' void f(void x) { @@ -527,16 +561,6 @@ void main() { ]); } - test_useOfVoidInSwitchExpressionError() async { - await assertErrorsInCode(''' -void f(void x) { - switch(x) {} -} -''', [ - error(CompileTimeErrorCode.USE_OF_VOID_RESULT, 26, 1), - ]); - } - test_useOfVoidInWhileConditionError() async { await assertErrorsInCode(''' void main() {