blob: 3adb1bcc3ad157cb5dfa3a9c69069a175c131778 [file] [log] [blame] [edit]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// 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:typed_data';
import 'package:analyzer/src/fine/lookup_name.dart';
import 'package:analyzer/src/fine/manifest_id.dart';
import 'package:analyzer/src/fine/manifest_item.dart';
import 'package:analyzer/src/fine/requirements.dart';
final class ExportCountMismatch extends ExportFailure {
final Uri fragmentUri;
final Uri exportedUri;
final int expectedCount;
final int actualCount;
ExportCountMismatch({
required this.fragmentUri,
required this.exportedUri,
required this.expectedCount,
required this.actualCount,
});
@override
String toString() {
return 'ExportCountMismatch(fragmentUri: $fragmentUri, '
'exportedUri: $exportedUri, '
'expectedCount: $expectedCount, '
'actualCount: $actualCount)';
}
}
class ExportedExtensionsMismatch extends RequirementFailure {
final Uri libraryUri;
final ManifestItemIdList expectedIds;
final ManifestItemIdList actualIds;
ExportedExtensionsMismatch({
required this.libraryUri,
required this.expectedIds,
required this.actualIds,
});
@override
String toString() {
return 'ExportedExtensionsMismatch(libraryUri: $libraryUri, '
'expectedIds: $expectedIds, actualIds: $actualIds)';
}
}
sealed class ExportFailure extends RequirementFailure {}
final class ExportIdMismatch extends ExportFailure {
final Uri fragmentUri;
final Uri exportedUri;
final LookupName name;
final ManifestItemId? expectedId;
final ManifestItemId actualId;
ExportIdMismatch({
required this.fragmentUri,
required this.exportedUri,
required this.name,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'ExportIdMismatch(fragmentUri: $fragmentUri, '
'exportedUri: $exportedUri, '
'name: ${name.asString}, '
'expectedId: $expectedId, '
'actualId: $actualId)';
}
}
final class ExportLibraryMissing extends ExportFailure {
final Uri uri;
ExportLibraryMissing({required this.uri});
@override
String toString() {
return 'ExportLibraryMissing(uri: $uri)';
}
}
class ImplementedMethodIdMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final LookupName methodName;
final ManifestItemId? expectedId;
final ManifestItemId? actualId;
ImplementedMethodIdMismatch({
required this.libraryUri,
required this.interfaceName,
required this.methodName,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'ImplementedMethodIdMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'methodName: ${methodName.asString}, '
'expectedId: $expectedId, actualId: $actualId)';
}
}
class InstanceChildrenIdsMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName instanceName;
final String childrenPropertyName;
final ManifestItemIdList expectedIds;
final ManifestItemIdList actualIds;
InstanceChildrenIdsMismatch({
required this.libraryUri,
required this.instanceName,
required this.childrenPropertyName,
required this.expectedIds,
required this.actualIds,
});
@override
String toString() {
return 'InstanceChildrenIdsMismatch(libraryUri: $libraryUri, '
'instanceName: ${instanceName.asString}, '
'childrenPropertyName: $childrenPropertyName, '
'expectedIds: $expectedIds, actualIds: $actualIds)';
}
}
class InstanceFieldIdMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final LookupName fieldName;
final ManifestItemId? expectedId;
final ManifestItemId? actualId;
InstanceFieldIdMismatch({
required this.libraryUri,
required this.interfaceName,
required this.fieldName,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'InstanceFieldIdMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'fieldName: ${fieldName.asString}, '
'expectedId: $expectedId, '
'actualId: $actualId)';
}
}
class InstanceMethodIdMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final LookupName methodName;
final ManifestItemId? expectedId;
final ManifestItemId? actualId;
InstanceMethodIdMismatch({
required this.libraryUri,
required this.interfaceName,
required this.methodName,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'InstanceMethodIdMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'methodName: ${methodName.asString}, '
'expectedId: $expectedId, actualId: $actualId)';
}
}
class InterfaceChildrenIdsMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final String childrenPropertyName;
final ManifestItemIdList? expectedIds;
final ManifestItemIdList? actualIds;
InterfaceChildrenIdsMismatch({
required this.libraryUri,
required this.interfaceName,
required this.childrenPropertyName,
required this.expectedIds,
required this.actualIds,
});
@override
String toString() {
return 'InterfaceChildrenIdsMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'childrenPropertyName: $childrenPropertyName, '
'expectedIds: $expectedIds, actualIds: $actualIds)';
}
}
class InterfaceConstructorIdMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final LookupName constructorName;
final ManifestItemId? expectedId;
final ManifestItemId? actualId;
InterfaceConstructorIdMismatch({
required this.libraryUri,
required this.interfaceName,
required this.constructorName,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'InterfaceConstructorIdMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'constructorName: ${constructorName.asString}, '
'expectedId: $expectedId, '
'actualId: $actualId)';
}
}
class InterfaceHasNonFinalFieldMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final bool expected;
final bool actual;
InterfaceHasNonFinalFieldMismatch({
required this.libraryUri,
required this.interfaceName,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'InterfaceHasNonFinalFieldMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'expected: $expected, '
'actual: $actual)';
}
}
class InterfaceIdMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final ManifestItemId expectedId;
final ManifestItemId actualId;
InterfaceIdMismatch({
required this.libraryUri,
required this.interfaceName,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'InterfaceIdMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'expectedId: $expectedId, '
'actualId: $actualId)';
}
}
class LibraryChildrenIdsMismatch extends RequirementFailure {
final Uri libraryUri;
final String childrenPropertyName;
final ManifestItemIdList expectedIds;
final ManifestItemIdList actualIds;
LibraryChildrenIdsMismatch({
required this.libraryUri,
required this.childrenPropertyName,
required this.expectedIds,
required this.actualIds,
});
@override
String toString() {
return 'LibraryChildrenIdsMismatch(libraryUri: $libraryUri, '
'childrenPropertyName: $childrenPropertyName, '
'expectedIds: $expectedIds, actualIds: $actualIds)';
}
}
class LibraryExportedUrisMismatch extends RequirementFailure {
final Uri libraryUri;
final List<Uri> expected;
final List<Uri> actual;
LibraryExportedUrisMismatch({
required this.libraryUri,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'LibraryExportedUrisMismatch(libraryUri: $libraryUri, '
'expected: $expected, actual: $actual)';
}
}
class LibraryFeatureSetMismatch extends RequirementFailure {
final Uri libraryUri;
final Uint8List? expected;
final Uint8List? actual;
LibraryFeatureSetMismatch({
required this.libraryUri,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'LibraryFeatureSetMismatch(libraryUri: $libraryUri, '
'expected: $expected, actual: $actual)';
}
}
class LibraryIsSyntheticMismatch extends RequirementFailure {
final Uri libraryUri;
final bool expected;
final bool actual;
LibraryIsSyntheticMismatch({
required this.libraryUri,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'LibraryIsSyntheticMismatch(libraryUri: $libraryUri, '
'expected: $expected, actual: $actual)';
}
}
class LibraryLanguageVersionMismatch extends RequirementFailure {
final Uri libraryUri;
final ManifestLibraryLanguageVersion expected;
final ManifestLibraryLanguageVersion actual;
LibraryLanguageVersionMismatch({
required this.libraryUri,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'LibraryLanguageVersionMismatch(libraryUri: $libraryUri, '
'expected: $expected, actual: $actual)';
}
}
class LibraryMetadataMismatch extends RequirementFailure {
final Uri libraryUri;
LibraryMetadataMismatch({required this.libraryUri});
@override
String toString() => 'LibraryMetadataMismatch(libraryUri: $libraryUri)';
}
class LibraryMissing extends RequirementFailure {
final Uri uri;
LibraryMissing({required this.uri});
@override
String toString() {
return 'LibraryMissing(uri: $uri)';
}
}
class LibraryNameMismatch extends RequirementFailure {
final Uri libraryUri;
final String? expected;
final String? actual;
LibraryNameMismatch({
required this.libraryUri,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'LibraryNameMismatch(libraryUri: $libraryUri, '
'expected: $expected, actual: $actual)';
}
}
final class OpaqueApiUseFailure extends RequirementFailure {
final List<OpaqueApiUse> uses;
OpaqueApiUseFailure({required this.uses});
@override
String toString() {
return 'OpaqueApiUseFailure(uses: $uses)';
}
}
class ReExportDeprecatedOnlyMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName name;
final bool expected;
final bool actual;
ReExportDeprecatedOnlyMismatch({
required this.libraryUri,
required this.name,
required this.expected,
required this.actual,
});
@override
String toString() {
return 'ReExportDeprecatedOnlyMismatch(libraryUri: $libraryUri, '
'name: ${name.asString}, expected: $expected, actual: $actual)';
}
}
sealed class RequirementFailure {}
class SuperImplementedMethodIdMismatch extends RequirementFailure {
final Uri libraryUri;
final LookupName interfaceName;
final int superIndex;
final LookupName methodName;
final ManifestItemId? expectedId;
final ManifestItemId? actualId;
SuperImplementedMethodIdMismatch({
required this.libraryUri,
required this.interfaceName,
required this.superIndex,
required this.methodName,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'SuperImplementedMethodIdMismatch(libraryUri: $libraryUri, '
'interfaceName: ${interfaceName.asString}, '
'superIndex: $superIndex, '
'methodName: ${methodName.asString}, '
'expectedId: $expectedId, actualId: $actualId)';
}
}
sealed class TopLevelFailure extends RequirementFailure {
final Uri libraryUri;
final LookupName name;
TopLevelFailure({required this.libraryUri, required this.name});
}
class TopLevelIdMismatch extends TopLevelFailure {
final ManifestItemId? expectedId;
final ManifestItemId? actualId;
TopLevelIdMismatch({
required super.libraryUri,
required super.name,
required this.expectedId,
required this.actualId,
});
@override
String toString() {
return 'TopLevelIdMismatch(libraryUri: $libraryUri, '
'name: ${name.asString}, '
'expectedId: $expectedId, '
'actualId: $actualId)';
}
}
class TopLevelNotInstance extends TopLevelFailure {
final Object? actualItem;
TopLevelNotInstance({
required super.libraryUri,
required super.name,
required this.actualItem,
});
@override
String toString() {
return 'TopLevelNotInstance(libraryUri: $libraryUri, '
'name: ${name.asString})';
}
}
class TopLevelNotInterface extends TopLevelFailure {
TopLevelNotInterface({required super.libraryUri, required super.name});
@override
String toString() {
return 'TopLevelNotInterface(libraryUri: $libraryUri, '
'name: ${name.asString})';
}
}