Skip to content
This repository was archived by the owner on Nov 20, 2024. It is now read-only.

Commit bc1b651

Browse files
committed
update unrelated_type_equality_checks for fixnum restructuring (#3869)
* update unrelated_type_equality_checks for fixnum restructuring * => source uri * check scheme
1 parent f42cb7a commit bc1b651

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

lib/src/rules/unrelated_type_equality_checks.dart

+9-6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:analyzer/dart/ast/token.dart';
77
import 'package:analyzer/dart/ast/visitor.dart';
88
import 'package:analyzer/dart/element/element.dart';
99
import 'package:analyzer/dart/element/type.dart';
10+
import 'package:collection/collection.dart';
1011

1112
import '../analyzer.dart';
1213
import '../extensions.dart';
@@ -148,12 +149,14 @@ bool _hasNonComparableOperands(TypeSystem typeSystem, BinaryExpression node) {
148149
bool _isCoreInt(DartType type) => type.isDartCoreInt;
149150

150151
bool _isFixNumIntX(DartType type) {
151-
if (type is! InterfaceType) {
152-
return false;
153-
}
154-
Element element = type.element;
155-
return (element.name == 'Int32' || element.name == 'Int64') &&
156-
element.library?.name == 'fixnum';
152+
// todo(pq): add tests that ensure this predicate works with fixnum >= 1.1.0-dev
153+
// See: https://github.com/dart-lang/linter/issues/3868
154+
if (type is! InterfaceType) return false;
155+
InterfaceElement element = type.element;
156+
if (element.name != 'Int32' && element.name != 'Int64') return false;
157+
var uri = element.library.source.uri;
158+
if (!uri.isScheme('package')) return false;
159+
return uri.pathSegments.firstOrNull == 'fixnum';
157160
}
158161

159162
class UnrelatedTypeEqualityChecks extends LintRule {

0 commit comments

Comments
 (0)