[no_duplicate_case_values] Use DartObject and hasKnownValue. (#1998)
diff --git a/lib/src/rules/no_duplicate_case_values.dart b/lib/src/rules/no_duplicate_case_values.dart
index 3d318ea..4feae03 100644
--- a/lib/src/rules/no_duplicate_case_values.dart
+++ b/lib/src/rules/no_duplicate_case_values.dart
@@ -2,10 +2,9 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'dart:collection';
-
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/ast/visitor.dart';
+import 'package:analyzer/dart/constant/value.dart';
import '../analyzer.dart';
@@ -82,23 +81,16 @@
@override
void visitSwitchStatement(SwitchStatement node) {
- final typeProvider = context.typeProvider;
-
- Map<DartObjectImpl, Expression> values =
- HashMap<DartObjectImpl, Expression>(
- equals: (DartObjectImpl key1, DartObjectImpl key2) {
- final equals = key1.isIdentical(typeProvider, key2);
- return equals.isBool && equals.toBoolValue();
- });
+ var values = <DartObject, Expression>{};
for (var member in node.members) {
if (member is SwitchCase) {
final expression = member.expression;
final result = context.evaluateConstant(expression);
- final value = result.value as DartObjectImpl;
+ final value = result.value;
- if (value == null) {
+ if (value == null || !value.hasKnownValue) {
continue;
}